using System.Collections.Generic;
using NHibernate;
using PortalFolia.Data.Objetos;
using PortalFolia.IRepositorio;

namespace PortalFolia.Repositorio
{
    
    public class RepositorioTipoIngresso : IRepositorioTipoIngresso
    {
        public TipoIngresso Inserir(TipoIngresso tipoIngresso)
        {
            GerenciadorBD.Instance.SessaoAtual().Save(tipoIngresso);
            return tipoIngresso;
        }

        public TipoIngresso Atualizar(TipoIngresso tipoIngresso)
        {
            TipoIngresso tmpTipoIngresso = ObterPorId(tipoIngresso.TipoIngressoId);

            // Atribuicao dos valores do objeto da memoria para o objeto obtido no banco de dados

            GerenciadorBD.Instance.SessaoAtual().Update(tmpTipoIngresso);
            return tmpTipoIngresso;
        }

        public void Excluir(TipoIngresso tipoIngresso)
        {
            GerenciadorBD.Instance.SessaoAtual().Delete(tipoIngresso);
        }

        public IList<TipoIngresso> ObterTodos()
        {
            ICriteria criteria = GerenciadorBD.Instance.SessaoAtual().CreateCriteria(typeof(TipoIngresso));
            return criteria.List<TipoIngresso>() as List<TipoIngresso>;
        }

        public TipoIngresso ObterPorId(int id)
        {
            return GerenciadorBD.Instance.SessaoAtual().Get<TipoIngresso>(id);
        }
    }
}